package com.atguigu.gmall.common.interceptor;

import com.atguigu.gmall.common.auth.UserAuthInfo;
import com.atguigu.gmall.common.utils.UserAuthUtils;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;


/**
 * 在FeignClientInterceptor拦截器中获取CartController的addCart方法所对应的userId、userTempId。
 * 使用ThreadLocal进行实现
 * 应该向ThreadLocal中存储什么数据？
 * 方案1：存储userId、userTempId
 * 方案2：存储HttpServletRequest对象
 */
//@Component
@Slf4j
public class FeignClientInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {

        /**
         * RequestContextHolder获取HttpServletRequest对象的底层原理?
         */
        UserAuthInfo userAuthInfo = UserAuthUtils.getUserAuthInfo();
        template.header("userId" , userAuthInfo.getUserId()) ;
        template.header("userTempId" , userAuthInfo.getUserTempId()) ;

    }

}
